use super::crypt_algid::CRYPT_MAC_AlgId;
use super::crypt_types::CRYPT_EAL_LibCtx;
use crate::bsl::bsl_params::BSL_Param;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EAL_MacCtx {
    _unused: [u8; 0],
}
pub type CRYPT_EAL_MacCtx = EAL_MacCtx;
unsafe extern "C" {
    pub fn CRYPT_EAL_MacIsValidAlgId(id: CRYPT_MAC_AlgId) -> bool;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacNewCtx(id: CRYPT_MAC_AlgId) -> *mut CRYPT_EAL_MacCtx;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderMacNewCtx(
        libCtx: *mut CRYPT_EAL_LibCtx,
        algId: i32,
        attrName: *const ::std::os::raw::c_char,
    ) -> *mut CRYPT_EAL_MacCtx;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacFreeCtx(ctx: *mut CRYPT_EAL_MacCtx);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacInit(ctx: *mut CRYPT_EAL_MacCtx, key: *const u8, len: u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacUpdate(ctx: *mut CRYPT_EAL_MacCtx, in_: *const u8, len: u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacFinal(ctx: *mut CRYPT_EAL_MacCtx, out: *mut u8, len: *mut u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacDeinit(ctx: *mut CRYPT_EAL_MacCtx);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacReinit(ctx: *mut CRYPT_EAL_MacCtx) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_GetMacLen(ctx: *const CRYPT_EAL_MacCtx) -> u32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacCtrl(
        ctx: *mut CRYPT_EAL_MacCtx,
        type_: i32,
        in_: *mut ::std::os::raw::c_void,
        len: u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MacSetParam(ctx: *mut CRYPT_EAL_MacCtx, param: *const BSL_Param) -> i32;
}
